package com.example.cheeseerpadmin.sys.controller;

import cn.hutool.core.date.DateUtil;
import com.example.cheeseerpadmin.sys.common.WebFileUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/file")
public class FileController {
    /**
     * 文件上传
     *
     * @param mf
     * @return
     */
    @RequestMapping("/uploadFile")
    public Map<String, Object> uploadFile(MultipartFile mf) {
        //1.前端将图片的信息放到mf当中传给后端，这样我们就可以得到文件名
        String oldName = mf.getOriginalFilename();
        //2.根据文件名生成新的文件名
        String newName = WebFileUtils.createNewFileName(oldName);
        //3.得到当前日期的字符串
        String dirName = DateUtil.format(new Date(), "yyyy-MM-dd");
        //4.构造文件夹
        File dirFile = new File(WebFileUtils.UPLOAD_PATH, dirName);
        //判断是否存在文件夹
        if (!dirFile.exists()) {
            dirFile.mkdir();//如果不存在就创建文件夹
        }
        //6.构建文件对象
        File file = new File(dirFile, newName + "_temp");
        //7.把mf里面的图片信息写入file
        try {
            mf.transferTo(file);
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
        }
        Map<String, Object> map = new HashMap<>();
        map.put("path", dirName + "/" + newName + "_temp");
        return map;
    }

    /**
     * 文件下载
     */
    @RequestMapping("/showImageByPath")
    public ResponseEntity<Object> showImageByPath(String path) {
        return WebFileUtils.createResponseEntity(path);
    }
}
